Quantifying pandemic spread and public health interventions during three global pandemics in Switzerland 1889, 1918 and 2020

Research question

  • Are patterns of pandemic spread, its determinants, and effects of public health interventions are similar across pandemics in Switzerland?
  • Estimate excess mortality for pandemics in 1890, 1918 and 2020 per district, age groups and sex
  • Comparing of spatial pattern between the pandemics
  • Investigate the determinants of spread in the context of different co-factors ( Urbanization, GIP per capita etc.)

Data

Historical data

  • Collected and digitalized from Kaspar Staub’s team
  • Pandemic 1890 (Russian flu): Data from 1879 - 1895
  • Pandemic 1918 (Spanish flu): Data from 1908 - 1925
  • Mortality data for each year, district, age group and sex
  • Population data for census of 1880, 1888, 1900, 1910, 1920 for all districts
  • Population data for sex and age group only for year census 1888 and 1910
  • Years between were interpolated

Covid 19

  • Death and population data from 2014 - 2020 for each district, sex and age group

Methods

  • Bayesian approach

  • INLA (Bayesian inference for Latent Gaussian Models)

  • Death data for \(130\) districts of Switzerland for all three pandemics (1890, 1918, 2020)

  • Data \(Y\) is given as the total number of death in fixed areas and in each year

  • Standard Poisson likelihood to model the counts \[ y_i \mid \eta_i\sim Po\left(E_i \exp(\eta_i)\right),\] where \(E_i\) is the ``population at risk’’ in region \(i\).

  • classical disease mapping model; BYM model (Besag, York and Mollie proposed it)

  • The log relative risk, \(\bf{\eta} = (\eta_1, \dots, \eta_n)^T\), is thus decomposed into \[\bf{\eta} = \mu + \bf{u} + \bf{v} \]

    • \(\mu\) is the overall intercept
    • \(\bf{u}\) is a random effect with spatial structure following the Besag model
    • \(\bf{v}\) represents a non-spatial overdispersion
  • \({\bf u}\) is “besag” modelled spatially structured with smoothing parameter \(\kappa_u\).

  • \({\bf v}\) is unstructured with precision parameter \(\kappa_v\), i.e. \(\bf{v} \sim \mathcal{N}(0, \kappa_v^{-1}I)\).

  • The precision terms \(\kappa_v\) and \(\kappa_u\) are assigned the default gamma prior distributions of INLA \[ \begin{aligned} \kappa_u & \sim \textrm{Gamma}( \alpha_u, \beta_u ), \\ \kappa_v & \sim \textrm{Gamma}( \alpha_v, \beta_v ). \end{aligned} \]

  • The default values are \(\alpha_u = \alpha_v = 1\) and \(\beta_u = \beta_v = 0.00005\).

  • Year is modelled using independent and identically (iid) Gaussian prior distribution with \({N}(0, \tau_v^{-1})\)

  • Calculation of expected values based on the mortality trend of the previous 4 years (1890 only 4 years possible)

 formula =
    death ~ 1 + offset(log(population)) +
    f(Region, model="bmy", graph="Bezirk_Inla", scale.model = TRUE)+
    f(Year, model='iid', constr = TRUE) 
   
inla.mod = inla(formula,
                  data=reg_data,
                  family="Poisson",
                  verbose = TRUE,
                  control.compute=list(config = TRUE),
                  control.mode=list(restart=T),
                  num.threads = round(parallel::detectCores()*.8),
                  control.predictor=list(compute=T))



  • 1000 samples from the posterior distribution
  • Calculation of median and 95% CrI(Credible interval) of the 1000 samples
  • Excess mortality = observed death counts – expected death counts

Results

Maps

Year

Sex

Because excess death is different in each pandemic year, and to better compare sex per pandemic year, the divisions of relative excess death per year are different. In 1890 no significant differences between sex, 1918 and 2020 higher excess mortality in men compared to women.

## [[1]]
## 
## Call:
## lm(formula = excess_percentage ~ sex, data = data_excess[data_excess$Year == 
##     1890, ])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -54.937  -7.035  -0.735   7.800  67.043 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)   2.8799     1.1939   2.412   0.0166 *
## sexm         -0.8326     1.6884  -0.493   0.6223  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.45 on 252 degrees of freedom
## Multiple R-squared:  0.0009641,  Adjusted R-squared:  -0.003 
## F-statistic: 0.2432 on 1 and 252 DF,  p-value: 0.6223

## [[1]]
## 
## Call:
## lm(formula = excess_percentage ~ sex, data = data_excess[data_excess$Year == 
##     1918, ])
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -106.539  -12.289   -3.094    9.296   92.898 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   39.262      2.158  18.192  < 2e-16 ***
## sexm           9.637      3.052   3.157  0.00178 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 24.61 on 258 degrees of freedom
## Multiple R-squared:  0.0372, Adjusted R-squared:  0.03347 
## F-statistic: 9.969 on 1 and 258 DF,  p-value: 0.001781

## [[1]]
## 
## Call:
## lm(formula = excess_percentage ~ sex, data = data_excess[data_excess$Year == 
##     2020, ])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -37.626  -9.653  -1.992   7.499  50.322 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   11.186      1.250   8.948  < 2e-16 ***
## sexm           5.133      1.768   2.903  0.00402 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 14.2 on 256 degrees of freedom
## Multiple R-squared:  0.03187,    Adjusted R-squared:  0.02809 
## F-statistic: 8.429 on 1 and 256 DF,  p-value: 0.004016

Age

Because excess death is different in each pandemic year, and to better compare age groups per pandemic year, the divisions of relative excess death per year are different. Since the highest excess death in the 1918 pandemic was between 20 - 39 years, we further divided the age groups from 0-69 years into 3 additional groups for the 1918 pandemic. In the other pandemic years, this is not possible due to low death rates in the younger age groups.

In 1890 no significant differences in excess mortality between age age groups. 1918 higher excess mortality for age group 0-69 years compared to > 70 years, in 2020 lower excess mortality for age group 0-69 years compared to < 70 years.

## [[1]]
## 
## Call:
## lm(formula = excess_percentage ~ age_group.y, data = data_excess[data_excess$Year == 
##     1890, ])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -44.418  -7.326  -0.580   7.081  79.042 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)   
## (Intercept)        3.892      1.344   2.895  0.00412 **
## age_group.y0_69   -1.674      1.901  -0.881  0.37928   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 15.15 on 252 degrees of freedom
## Multiple R-squared:  0.003069,   Adjusted R-squared:  -0.0008871 
## F-statistic: 0.7758 on 1 and 252 DF,  p-value: 0.3793

## [[1]]
## 
## Call:
## lm(formula = excess_percentage ~ age_group.y, data = data_excess[data_excess$Year == 
##     1918, ])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -51.142 -11.508  -1.007  10.168 100.078 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        5.063      1.854   2.732  0.00673 ** 
## age_group.y0_69   54.798      2.621  20.905  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 21.13 on 258 degrees of freedom
## Multiple R-squared:  0.6288, Adjusted R-squared:  0.6273 
## F-statistic:   437 on 1 and 258 DF,  p-value: < 2.2e-16

## [[1]]
## 
## Call:
## lm(formula = excess_percentage ~ age_group.y, data = data_excess[data_excess$Year == 
##     2020, ])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -48.422 -10.131  -0.849   8.402  57.224 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       12.616      1.378   9.152  < 2e-16 ***
## age_group.y0_69  -10.223      1.949  -5.244 3.29e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 15.66 on 256 degrees of freedom
## Multiple R-squared:  0.09701,    Adjusted R-squared:  0.09348 
## F-statistic:  27.5 on 1 and 256 DF,  p-value: 3.288e-07

1918 Age groups 0-19, 20-39 and 40-69 show higher excess mortality compared to >70 years. The highest excess mortality shows the age group 0-69.

## 
## Call:
## lm(formula = excess_percentage ~ age_group, data = data_excess)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -159.50  -17.16   -1.03   13.32  282.52 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       5.063      3.843   1.317 0.188280    
## age_group0_19    30.890      5.435   5.683 2.22e-08 ***
## age_group20_39  226.383      5.435  41.649  < 2e-16 ***
## age_group40_69   20.035      5.435   3.686 0.000252 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 43.82 on 516 degrees of freedom
## Multiple R-squared:  0.8141, Adjusted R-squared:  0.813 
## F-statistic: 753.2 on 3 and 516 DF,  p-value: < 2.2e-16

Age and Sex

Because excess death is different in each pandemic year, and to better compare age groups per pandemic year, the divisions of relative excess death per year are different. Since the highest excess death in the 1918 pandemic was between 20 - 39 years, we further divided the age groups from 0-69 years into 3 additional groups for the 1918 pandemic. In the other pandemic years, this is not possible due to low death rates in the younger age groups.

1918 - Age 20 - 39

The relative mortality rate is above 14% for both sexes in the 20-39 age group, but even higher for men than for women.

## 
## Call:
## lm(formula = excess_percentage ~ sex, data = data_excess)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -220.47 -107.90  -16.87   96.29  300.85 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   99.149      7.782  12.740  < 2e-16 ***
## sexm          48.530     11.006   4.409 1.26e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 125.5 on 518 degrees of freedom
## Multiple R-squared:  0.03618,    Adjusted R-squared:  0.03432 
## F-statistic: 19.44 on 1 and 518 DF,  p-value: 1.261e-05

Co-factors

GDP per capita

GDP per capita was taken from 1888 for 1890, 1910 for 1918, 2008 for 2020.

Number of hospitals

Proportion of children aged 5-14

Proportion of child mortality

Child mortality was taken from the year before the pandamic